﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Microsoft.Security.Application;

#pragma warning disable 0618 // disable AntiXX is obsolete warning

public partial class VluchtBoeken : System.Web.UI.Page
{
    private ConnectDB db;
 
    protected void Page_Load(object sender, EventArgs e)
    {
        db = new ConnectDB();
        // Gegevens uit de database omtrent vluchthavens en vertrek tijden
        // ophalen en tonen in de verschillende UI elementen
        if (db.getVertrekLuchthavens() == null) Response.Redirect("GenericErrorPage.aspx");
        if (dd_vlucht_heen.Items.Count == 0)
            foreach(string s in db.getVertrekLuchthavens())
                dd_vlucht_heen.Items.Add(s);
         
        if (dd_vlucht_terug.Items.Count == 0)
            foreach (string s in db.getBestemmingLuchthavens())
                dd_vlucht_terug.Items.Add(s);

        if(rb_tijd_heen.Items.Count == 0)
            foreach (string s in db.getVluchtTijden())
                rb_tijd_heen.Items.Add(s);

        if (rb_tijd_retour.Items.Count == 0)
            foreach (string s in db.getVluchtTijden())
                rb_tijd_retour.Items.Add(s);

    }
    
    // Maak retour invoermogelijkheden zichtbaar of onzichtbaar afhankelijk van de checkbox
    protected void cb_bevestig_retour_CheckedChanged(object sender, EventArgs e)
    {
        cal_datum_retour.Visible = cb_bevestig_retour.Checked;
        rb_tijd_retour.Visible = cb_bevestig_retour.Checked;
    }
    
    DateTime datumHeen;
    DateTime datumRetour;
    Vlucht heenVlucht;
    Vlucht retourVlucht;
    
    protected void btn_boek_vlucht_Click(object sender, EventArgs e)
    {
        // Opschonen van oude data indien aanwezig
        if (Session["retourVlucht"] != null)
            Session["retourVlucht"] = null;
       
 
        // Indien alles goed is ingevuld, creeër een sessie met de ingevulde gegevens, anders, geef een foutmelding
        datumHeen = cal_datum_heen.SelectedDate;
        datumRetour = cal_datum_retour.SelectedDate;
        if (datumHeen > DateTime.Now && rb_tijd_heen.SelectedIndex != -1)
        {
            maakHeenVlucht();

            if (cb_bevestig_retour.Checked && datumRetour != null && datumRetour > datumHeen && rb_tijd_retour.SelectedIndex != -1)
            {
                maakRetourVlucht(); // Retourvlucht heeft een aparte sessie met eenzelfde object
            }
            else if (cb_bevestig_retour.Checked && (datumRetour <= datumHeen || datumRetour == null))
                lbl_foutmelding.Text = Fout.ongeldigeRetourDatum;
            else if (cb_bevestig_retour.Checked && rb_tijd_retour.SelectedIndex == -1)
                lbl_foutmelding.Text = Fout.ongeldigeRetourTijd;
            else
                lbl_foutmelding.Text = Fout.algemeen;
        }
        else if (datumHeen <= DateTime.Now)
            lbl_foutmelding.Text = "Geef een geldige vertrekdatum op.";
        else if(rb_tijd_heen.SelectedIndex == -1)
            lbl_foutmelding.Text = "Voer een vertrek tijd in.";
        else
            lbl_foutmelding.Text = Fout.algemeen;

        if ((Session["heenVlucht"] != null) && (Session["retourVlucht"] != null) || Session["heenVlucht"] != null && cb_bevestig_retour.Checked == false)
            Response.Redirect("VluchtOverzicht.aspx");
      
    }

    // Sessies aanmaken met vluchten
    public void maakHeenVlucht()
    {
        heenVlucht = new Vlucht();
        Session["heenVlucht"] = heenVlucht;//het object kan opgehaald worden uit deze variabele door een nieuw object van een type hiernaar te laten verwijzen
        heenVlucht.PlaatsVertrek = dd_vlucht_heen.SelectedValue;
        heenVlucht.PlaatsBestemming = dd_vlucht_terug.SelectedValue;
        heenVlucht.DatumVertrek = datumHeen;
        heenVlucht.TijdVluchtHeen = rb_tijd_heen.SelectedValue;
        heenVlucht.AantalPersonen = int.Parse(dd_aantal_personen.SelectedItem.Value);
  
    }
   
    public void maakRetourVlucht()
    {
        retourVlucht = new Vlucht();
        Session["retourVlucht"] = retourVlucht;//het object kan opgehaald worden uit deze variabele door een nieuw object van een type hiernaar te laten verwijzen
        retourVlucht.PlaatsVertrek = dd_vlucht_terug.SelectedValue;
        retourVlucht.PlaatsBestemming = dd_vlucht_heen.SelectedValue;
        retourVlucht.DatumVertrek = datumRetour;
        retourVlucht.TijdVluchtHeen = rb_tijd_retour.SelectedValue;
        retourVlucht.AantalPersonen = int.Parse(dd_aantal_personen.SelectedItem.Value);

    }
   
}